package com.ruoyi.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 学习进度对象 learning_progress
 * 
 * @author ruoyi
 * @date 2025-08-15
 */
public class LearningProgress extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 进度ID */
    private Long progressId;

    /** 学生ID */
    @Excel(name = "学生ID")
    private Long studentId;

    /** 开课ID */
    @Excel(name = "开课ID")
    private Long offeringId;

    /** 章节ID */
    @Excel(name = "章节ID")
    private Long chapterId;

    /** 实验ID */
    @Excel(name = "实验ID")
    private Long experimentId;

    /** 进度类型 */
    @Excel(name = "进度类型")
    private String progressType;

    /** 完成状态 */
    @Excel(name = "完成状态")
    private String completionStatus;

    /** 完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date completionTime;

    /** 学习时长(分钟) */
    @Excel(name = "学习时长(分钟)")
    private Long learningDuration;

    /** 最后访问时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后访问时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastAccessTime;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    public void setProgressId(Long progressId) 
    {
        this.progressId = progressId;
    }

    public Long getProgressId() 
    {
        return progressId;
    }

    public void setStudentId(Long studentId) 
    {
        this.studentId = studentId;
    }

    public Long getStudentId() 
    {
        return studentId;
    }

    public void setOfferingId(Long offeringId) 
    {
        this.offeringId = offeringId;
    }

    public Long getOfferingId() 
    {
        return offeringId;
    }

    public void setChapterId(Long chapterId) 
    {
        this.chapterId = chapterId;
    }

    public Long getChapterId() 
    {
        return chapterId;
    }

    public void setExperimentId(Long experimentId) 
    {
        this.experimentId = experimentId;
    }

    public Long getExperimentId() 
    {
        return experimentId;
    }

    public void setProgressType(String progressType) 
    {
        this.progressType = progressType;
    }

    public String getProgressType() 
    {
        return progressType;
    }

    public void setCompletionStatus(String completionStatus) 
    {
        this.completionStatus = completionStatus;
    }

    public String getCompletionStatus() 
    {
        return completionStatus;
    }

    public void setCompletionTime(Date completionTime) 
    {
        this.completionTime = completionTime;
    }

    public Date getCompletionTime() 
    {
        return completionTime;
    }

    public void setLearningDuration(Long learningDuration) 
    {
        this.learningDuration = learningDuration;
    }

    public Long getLearningDuration() 
    {
        return learningDuration;
    }

    public void setLastAccessTime(Date lastAccessTime) 
    {
        this.lastAccessTime = lastAccessTime;
    }

    public Date getLastAccessTime() 
    {
        return lastAccessTime;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("progressId", getProgressId())
            .append("studentId", getStudentId())
            .append("offeringId", getOfferingId())
            .append("chapterId", getChapterId())
            .append("experimentId", getExperimentId())
            .append("progressType", getProgressType())
            .append("completionStatus", getCompletionStatus())
            .append("completionTime", getCompletionTime())
            .append("learningDuration", getLearningDuration())
            .append("lastAccessTime", getLastAccessTime())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
